#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
	int n, i, j, k = 1, a[100][100];
	scanf("%d", &n);

	//将指向右上的对角线放平,从上至下行标依次编号为1->n  
	for (i = 1; i <= n; i++)  //将数字填入对角线的左上部分(包括对角线)
		for (j = 1; j <= i; j++)
		{
			if (i % 2 != 0)  //奇数行
				a[i - j + 1][j] = k;  //从第1列相应行沿对角线方向(右上)填入数字 
			else  //偶数行
				a[j][i - j + 1] = k;  //从第1行相应列沿对角线方向(左下)填入数字  
			k++;
		}

	for (i = n + 1; i < 2 * n; i++)  //将数字填入对角线的右下部分
		for (j = 1; j <= 2 * n - i; j++)
		{
			if (i % 2 != 0)  //奇数行
				a[n - j + 1][i - n + j] = k;  //从第n行相应列沿对角线方向(右上)填入数字 
			else  //偶数行
				a[i - n + j][n - j + 1] = k;  //从第n列相应行沿对角线方向(左下)填入数字
			k++;
		}

	for (i = 1; i <= n; i++)  //打印蛇形方阵
	{
		for (j = 1; j <= n; j++)
			printf("%5d", a[i][j]);
		printf("\n");
	}
	return 0;
}